*
本次课程一共学习了六种算法,分别为:递归与分支策略,动态规划,贪心算法,回溯法,分支限界法,随机化算法。下面就我的理解谈谈我对各个算法的理解和学习体会。
1 递归与分治策略:
递归:
间接或直接地调用自身的算法称为递归算法
分治:
分治的基本思想是将一个规模为n的问题分解成k个规模较小的子问题,这些子问题相互独立且与原问题相同。递归的解这些子问题,然后将各个子问题的解合并成原问题的解
分治法通常的计算效率:
{O(1) n=n0
T(n)<={
{kT(n/m)+f(n) n>n0
具体应用的例子:
- 二分搜素
- 大整数的乘法
- Strassen矩阵乘法
- 棋盘覆盖
- 合并排序
- 快速排序
- 线性时间选择
- 最接近对点问题
- 循环赛日程表
2 动态规划
动态规划与分治法类似,其基本思想也是将待求问题分解成若干个子问题,先求出解的子问题,然后就从这些子问题的解得到原问题的解。与分治方法不同的是,适合于动态规划求解的问题,经分解得到的子问题往往不是相互独立的。
基本思想:
用一个来记录所有已解决的,不管该子问题以后是否被用到,只要它被计算过,就将